package com.example.optimizaapp;

import java.lang.reflect.Array;
import java.text.SimpleDateFormat;import com.example.optimizaapp.domain.EstadoIncidente;

import java.util.ArrayList;

import com.example.optimizaapp.domain.Incidente;
import com.example.optimizaapp.domain.ManejadorIncidente;
import com.example.optimizaapp.domain.ManejadorUsuario;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;

public class DetalleIncidente extends Activity {
	ManejadorIncidente mi= ManejadorIncidente.getManejadorIncidente();
	ManejadorUsuario mu = ManejadorUsuario.getManejadorUsuario();
	Incidente i;
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.activity_detalle_incidente);
		setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
		getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
	    // TODO Auto-generated method stub
		this.fillScreen();
	}
	
	
	 
	public void fillScreen(){
		Bundle extras = getIntent().getExtras();
		int position=-1;
		if (extras != null) {
		    position = extras.getInt("INDEX");
		}
		i = (Incidente)mi.getIncidentes().get(position);
		
		EditText txtIdIncidente = (EditText)findViewById(R.id.txtNroIncidente);
		String num = String.valueOf(i.getIdIncidente());
		txtIdIncidente.setText(num);
		EditText txtClasificacion = (EditText)findViewById(R.id.txtClasificacion);
		txtClasificacion.setText(i.getClasificacionIncidente().getDescripcion());
		EditText txtCliente = (EditText)findViewById(R.id.txtCliente);
		txtCliente.setText(i.getCliente().getNombreCliente());
		EditText txtFecha = (EditText)findViewById(R.id.txtFecha);
		SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
		txtFecha.setText(df.format(i.getFecha()));
		EditText txtDescripcion = (EditText)findViewById(R.id.txtDescripcion);
		txtDescripcion.setText(i.getDescripcion());
		EditText txtTecnico = (EditText)findViewById(R.id.txtTecnico);
		txtTecnico.setText(mu.getUsuarioLogueado().getNombreUsuario());
		Button btnEstado = (Button)findViewById(R.id.btnEstadoIncidente);
		btnEstado.setText(i.getEstadoIncidente().getDescripcion());
		EditText txtPrioridad = (EditText)findViewById(R.id.txtPrioridad);
		if (txtPrioridad == null) {
			Log.w("", "TextView is null"); 
		}else{
			txtPrioridad.setText(i.getPrioridadIncidente().getDescripcion());
		}
		
	}
		
	public void showAlertView(View view){
		
		final ArrayList<EstadoIncidente> estadosIncidente = new ArrayList<EstadoIncidente>();
		for (int i=0; i<mi.getEstados().size();i++){
			EstadoIncidente e = (EstadoIncidente)mi.getEstados().get(i);
			if (e.getId()!= 1){
				estadosIncidente.add(e);
			}
		}
		final CharSequence[] estado = new CharSequence[estadosIncidente.size()];
		
		for (int i = 0; i< estadosIncidente.size(); i++){
			EstadoIncidente estadoActual = (EstadoIncidente)estadosIncidente.get(i);
			estado[i] = estadoActual.getDescripcion();
		}
		
	    AlertDialog.Builder alert = new AlertDialog.Builder(DetalleIncidente.this);
	    alert.setTitle("Cambiar Estado");
	    alert.setSingleChoiceItems(estado,-1, new DialogInterface.OnClickListener()
	   
	    {
	        @Override
	        public void onClick(DialogInterface dialog, int which) 
	        {
	        	
	        	i.setEstadoIncidente(estadosIncidente.get(which));
	        	mi.modificarIncidente(i);
	        	Button btnEstado = (Button)findViewById(R.id.btnEstadoIncidente);
	    		btnEstado.setText(estadosIncidente.get(which).getDescripcion());
	            dialog.dismiss();
	            if (estadosIncidente.get(which).getDescripcion().equals("Cerrado")){
	            	ingresarSolucion();
	            }
	            
	        }
	    });
	    alert.show();
	}
	
	public void ingresarSolucion(){
		AlertDialog.Builder alert = new AlertDialog.Builder(this);

		alert.setTitle("Ingresar Solucion");
		
		// Set an EditText view to get user input 
		final EditText input = new EditText(this);
		alert.setView(input);

		alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
		public void onClick(DialogInterface dialog, int whichButton) {
		 
		  // Do something with value!
		  i.setSolucion(input.getText().toString());
		  mi.agregarSolucion(i);		  
		  InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(input.getWindowToken(), 0);
		  finish();
		  }
		
		
		});

		alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
		  public void onClick(DialogInterface dialog, int whichButton) {
		    // Canceled.
			
			i.setEstadoIncidente(mi.getEstados().get(0));
			InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(input.getWindowToken(), 0);
			dialog.dismiss();
		  }
		});

		alert.show();
	}

}
